﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Elegant.Telas.Controles
{
    class FileManager
    {
        StreamWriter swWriteFile;
        StreamReader swReadFile;
        

        public FileManager() { 
            
        }

        /// <summary>
        /// Método que cria um arquivo
        /// </summary>
        /// <param name="filePath">caminho do arquivo</param>
        public void createFile(string filePath)
        {
            
                this.swWriteFile = new StreamWriter(File.Create(filePath));
                this.closeWriteFile();              
           
        }

        /// <summary>
        /// Abre um arquivo de leitura
        /// </summary>
        /// <param name="filePath">caminho do arquivo</param>
        public void openWriteFile(string filePath)
        {
            
           this.swWriteFile = new StreamWriter(File.OpenWrite(filePath));
            

        }

        /// <summary>
        /// Escreve um texto no arquivo de escrita
        /// </summary>
        /// <param name="text">texto a ser inserido</param>
         public void writeFile(string text)
        {
            this.swWriteFile.WriteLine(text);
        }

        /// <summary>
        /// Fecha o arquivo de escrita
        /// </summary>
        public void closeWriteFile()
        {
            this.swWriteFile.Close();
        }

        /// <summary>
        /// Cria e abre um arquivo de escrita
        /// </summary>
        /// <param name="filePath">arquivo de escrita</param>
        public void createAndOpenWriteFile(string filePath)
        {
            this.createFile(filePath);
            this.openWriteFile(filePath);
        }

        /// <summary>
        /// Abre um arquivo para leitura
        /// </summary>
        /// <param name="filePath">caminho do arquivo</param>
        public void openReadFile(string filePath){
            this.swReadFile = new StreamReader(File.OpenRead(filePath));
        }

        /// <summary>
        /// Lê uma linha do arquivo de arquivo
        /// </summary>
        /// <returns></returns>
        public string readLine()
        {
            return swReadFile.ReadLine();
        }
           
        /// <summary>
        /// Verifica se já chegou o final do arquivo de leitura
        /// </summary>
        /// <returns>retorna true se chegou ao final do arquivo</returns>
        public bool isEndOfStream()
        {
            return (this.swReadFile.EndOfStream == true);
        }
    }
}
